\begin{tikzpicture}
[
	input/.style={circle, draw=black!50, fill=blue!20, minimum size = 6mm},
	module/.style={rectangle, draw=black!50, fill=yellow!30, rounded corners,minimum width = 2.5cm, minimum height=0.8cm},
	output/.style={rectangle, draw=black!50, fill=red!20, rounded corners,minimum width = 0.7cm, minimum height=6mm},
	target/.style={rectangle, draw=black!50, fill=green!20, rounded corners,minimum width = 0.8cm, minimum height=0.8cm}
]
\matrix (network)
[matrix of nodes,
column sep={0.6cm},
row sep={0.3cm}]
{
	& \node[module] (module-1){MLP}; & & \\
	\node[input] (input-1) {}; & \node[module] (module-2) {RBF}; & & \node[output](output-1){};\\
	& \node[module] (module-3){Linear}; & &\\
	& \node[module, text width = 1.5cm, text centered] (module-4) {Quadratic}; &&\node[target](target-1){Target}; \\
};

\draw [-stealth] ([xshift=-7mm]input-1.west) -- (input-1);

\foreach \x in {1,...,4}{
	\draw(input-1) -- (module-\x.west);
	\draw(module-\x.east) -- (output-1);	
}
\draw[-stealth](output-1) -- ([xshift=7mm]output-1.east);

\draw[-stealth](target-1) -- (output-1);

\node[above left] at (input-1.north) {Input};
\node[above right,text width=2cm] at (output-1.north) {Compare \\\& Output};
\node[above,yshift=5mm] at (module-1.north) {Modules};
\end{tikzpicture}
